Android listview 点击item没有变色效果

又遇一坑:
listview里写了半天,发现点击item的时候默认的变灰色的效果没了。

一开始试着修改listview的属性:android:listSelector 但是改成什么都没有效果。

后来以为是由于item里面子view把焦点抢走了,导致listview得不到焦点没法响应点击事件,但是写了个OnItemClickListener以后发现点击事件可以正常响应。

网上找了半天总算找到了原因:因为设置了item的背景颜色导致了默认的点击变色效果失效。如果要设置listview的背景颜色的话直接在listview的属性里设置就好了。如果一定要设置item的背景色,网上给出了一个解决办法:

ListView中设置item的背景色后,默认的行点击颜色失效的解决办法

本文的方法来自此处:http://daniel-codes.blogspot.com/2010/07/how-to-change-listview-rows-background.html

只说明一下用法:

建立一个drawable的XML文件,当然放在drawable文件夹下,比如保存文件为bg_list_item.xml

输入以下代码:

<?xml version="1.0" encoding="UTF-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_window_focused="false" android:state_selected="true" android:drawable="@android:color/transparent" /> 

  <item android:state_selected="true" android:drawable="@android:color/transparent" /> 

  <item android:state_pressed="true" android:state_selected="false" android:drawable="@android:color/transparent" /> 

  <item android:state_selected="false" android:drawable="@color/guide_list_item_bg" /> 

</selector>

注意红字的地方,改成你想用的背景图片或者颜色。

在XML布局文件中可以,用 android:background=”@drawable/bg_list_item” 设置。

在java中可以用 View的 setBackgroundResrouce(R.drawable.bg_list_item); 来设置

作者:holmes Zhang
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,否则保留追究法律责任的权利。